package com.jt.controller;
/**商品系列操作*/
import com.jt.pojo.ItemCat;
import com.jt.service.ItemCatService;
import com.jt.vo.SysResult;
import org.apache.ibatis.annotations.Delete;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/itemCat")
@CrossOrigin
public class ItemCatController {
    @Autowired
    private ItemCatService itemCatService;

    /**
     * 商品分类查询
     * 请求路径: /itemCat/findItemCatList/{level}
     * 请求类型: get
     * 请求参数: level
     * 返回值: SysResult(List集合)
     */
    @GetMapping("/findItemCatList/{level}")
    public SysResult findItemCatList(@PathVariable Integer level){
        List<ItemCat> list = itemCatService.findItemCatList(level);
        return SysResult.success(list);
    }

    /**
     *     请求路径: /itemCat/status/{id}/{status}
     *     请求类型: put
     *     请求参数: id  status
     *     返回值: SysResult对象
     */
    @PutMapping("/status/{id}/{status}")
    @Transactional
    public SysResult UpdatestatusId(ItemCat itemCat){
        itemCatService.UpdatestatusId(itemCat);
        return SysResult.success();
    }

    /**
     * 实现商品分类新增
     *     请求路径: /itemCat/saveItemCat
     *     请求类型: post
     *     请求参数: 表单数据
     *     返回值: SysResult对象
     */
    @PostMapping("/saveItemCat")
    public SysResult saveItemCat(@RequestBody ItemCat itemCat){
        itemCatService.saveItemCat(itemCat);
        return SysResult.success();
    }

    /**
     * 请求路径: /itemCat/updateItemCat
     * 请求类型: put
     * 请求参数: 表单数据 ItemCat对象
     * 返回值: SysResult对象
     */
    @PutMapping("/updateItemCat")
    public SysResult updateItemCat(@RequestBody ItemCat itemCat){
        itemCatService.updateItemCat(itemCat);
        return SysResult.success();
    }

    /**
     * - 请求路径: /itemCat/deleteItemCat?id=xx&level=xx
     *  - 请求类型: delete
     *  - 业务描述: 当删除节点为父级时,应该删除自身和所有的子节点
     *  - 请求参数: id/level
     *  - 返回值:  SysResult对象
     */
    @DeleteMapping("/deleteItemCat")
    public SysResult deleteItemCat(ItemCat itemCat){
        itemCatService.deleteItemCat(itemCat);
        return SysResult.success();
    }
}
